package com.rxst.msg.server;

import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import com.rxst.msg.base.ResponseVo;
import com.rxst.msg.dto.save.MsgxUserSaveDto;
import com.rxst.msg.dto.save.user.LoginUserDto;
import com.rxst.msg.dto.save.user.UpdateCommenUserDto;
import com.rxst.msg.dto.save.user.UpdatePasswordDto;
import com.rxst.msg.dto.search.MsgxUserSearchDto;
import com.rxst.msg.entity.MsgxUserEntity;
import com.rxst.msg.sso.entity.UserContext;
import com.rxst.msg.vo.MsgxUserVo;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 用户表
 *
 * @author rxst
 * @email rxst@gmail.com
 * @date 2021-08-19 11:47:01
 */
public interface MsgxUserService extends IService<MsgxUserEntity> {
    /**
     * 列表
     *
     * @param vo
     * @return
     */
    List<MsgxUserVo> list(MsgxUserSearchDto vo);

    /**
     * 分页
     *
     * @param vo
     * @return
     */
    PageInfo<MsgxUserVo> page(MsgxUserSearchDto vo);

    /**
     * 保存
     *
     * @param dto 参数
     * @return 操作状态
     */
    Boolean saveEntity(MsgxUserSaveDto dto);

    /**
     * 批量新增
     *
     * @param list 条件
     * @return 操作状态
     */
    Boolean saveEntityBatch(List<MsgxUserEntity> list);

    /**
     * 修改
     *
     * @param dto 参数
     * @return 操作状态
     */
    Boolean updateEntity(MsgxUserEntity dto);

    /**
     * 批量修改
     *
     * @param list 条件
     * @return 操作状态
     */
    Boolean updateEntityBatch(List<MsgxUserEntity> list);

    /**
     * 逻辑删除
     *
     * @param id 主键
     */
    void deleteLogic(Long id);

    /**
     * 批量逻辑删除
     *
     * @param ids 主键集合
     */
    void deleteLogicByIds(List<Long> ids);

    /**
     * 用户登录
     *
     * @param user 条件
     * @return
     */
    UserContext login(LoginUserDto user);

    /**
     * 用户修改密码
     *
     * @param user       用户数据
     * @param userEntity 用户服务器数据
     * @return 操作状态
     */
    Boolean updatePassword(UpdatePasswordDto user, MsgxUserEntity userEntity);

    //编辑用户信息
    Boolean updateCommonUser(UpdateCommenUserDto userListDto);

    /**
     * 导入
     *
     * @param multipartFile
     * @return
     */
    ResponseVo importData(MultipartFile multipartFile);
}

